/**
 * promise get请求
 * @param {string} url 请求地址
 * @param {object} params 请求参数
 * @param {string|undefined} type 返回的数据类型
 * @param {object} headers 自定义请求头
 * @returns Promise
 */
function get(url, params, type = 'json', headers = {}) {
    const p = new Promise((resolve, reject) => {
        // 1、创建AJAX对象
        const xhr = new XMLHttpRequest
        // 2、监控状态
        xhr.onreadystatechange = () => {
            if (xhr.readyState == 4) {
                if (xhr.status == 200) {
                    let res = xhr.responseText
                    if (type == "json") res = JSON.parse(res)
                    resolve(res)
                } else {
                    reject(xhr.status)
                }
            }
        }
        // 过滤数据
        let temp = []
        for (let key in params) {
            temp.push(`${key}=${params[key]}`)
        }
        // 3、请求方式、请求地址
        xhr.open("get", `${url}?${temp.join("&")}`)
        // 自定义请求头
        for (let key in headers) {
            xhr.setRequestHeader(key, headers[key])
        }
        // 4、发送
        xhr.send(null)
    })
    return p
}



/**
 * promise post请求
 * @param {string} url 请求地址
 * @param {object} params 请求参数
 * @param {string|undefined} type 返回的数据类型
 * @param {object} headers 自定义请求头
 * @returns Promise
 */
function post(url, params, type, headers = {}) {
    const p = new Promise((resolve, reject) => {
        // 1、创建AJAX对象
        const xhr = new XMLHttpRequest
        // 2、监控状态
        xhr.onreadystatechange = () => {
            if (xhr.readyState == 4) {
                if (xhr.status == 200) {
                    let res = xhr.responseText
                    if (type == "json") res = JSON.parse(res)
                    resolve(res)
                } else {
                    reject(xhr.status)
                }
            }
        }
        // 过滤数据
        let temp = []
        for (let key in params) {
            temp.push(`${key}=${params[key]}`)
        }
        // 3、请求方式、请求地址
        xhr.open("post", url)
        // 默认请求头
        xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded")
        // 自定义请求头
        for (let key in headers) {
            xhr.setRequestHeader(key, headers[key])
        }
        // 4、发送
        xhr.send(temp.join("&"))
    })
    return p
}